// treechart/treechart.js

// 使用 require 引入 WxNotificationCenter.js 模块
const WxNotificationCenter = require('../../utils/WxNotificationCenter.js');

/*
 * 文档参考 https://developers.weixin.qq.com/miniprogram/dev/framework/custom-component/component.html
 * API参考 https://developers.weixin.qq.com/miniprogram/dev/reference/api/Component.html
 * Component 构造器可用于定义组件，调用 Component 构造器时可以指定组件的属性、数据、方法等。
 * Component(Object object) --- 创建自定义组件，接受一个 Object 类型的参数。
 */
Component({
  /*
   * properties --- 组件的对外属性，是属性名到属性设置的映射表
   * 组件的属性列表
   * 
   * 属性类型
   * 文档参考 https://developers.weixin.qq.com/miniprogram/dev/framework/view/component.html#%E5%B1%9E%E6%80%A7%E7%B1%BB%E5%9E%8B
   */
  properties: {
    dataSource: Object,
    isRoot: Boolean
  },

  /*
   * data --- 组件的内部数据，和 properties 一同用于组件的模板渲染
   * 组件的初始数据
   */
  data: {},

  /*
   * methods --- 组件的方法，包括事件响应函数和任意的自定义方法
   * 组件的方法列表
   */
  methods: {
    // 点击用户
    itemClick: (event) => {
      /*
       * 事件对象 event
       * 文档参考 https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html#%E4%BA%8B%E4%BB%B6%E5%AF%B9%E8%B1%A1
       * 
       * target --- 触发事件的源组件
       * https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html#target
       * 
       * currentTarget --- 事件绑定的当前组件
       * https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/event.html#currentTarget
       * 
       * dataset --- 在组件节点中可以附加一些自定义数据。这样，在事件中可以获取这些自定义的节点数据，用于事件的逻辑处理。
       * 在 WXML 中，这些自定义数据以 data- 开头，多个单词由连字符 - 连接。这种写法中，连字符写法会转换成驼峰写法，而大写字符会自动转成小写字符。
       * data-element-type ，最终会呈现为 event.currentTarget.dataset.elementType
       * data-elementType ，最终会呈现为 event.currentTarget.dataset.elementtype
       * 
       * event.currentTarget.dataset.item --- 当前事件对象的自定义的节点数据
       */
      let item = event.currentTarget.dataset.item;

      /*
       * 必须先使用 addNotification 或 addOnceNotification 函数来注册通知对象方法
       * 然后才可以调用 postNotificationName 函数来发送通知方法
       * 
       * 点击事件的回调处理
       */
      WxNotificationCenter.postNotificationName('NOTI_TREECLICK', item);
    }
  }
})
